
class Dog: # python 开发规范里 类 名称建议用驼峰体 如 DogBiteAttack

    d_type = "京巴" # 属性，类属性，类变量    公共属性

    def __init__(self,name,age): # 初始化方法，构造方法，构造函数，实例化时会自动执行，进行一些初始化工作
        print("Hahaha",name,age)

        # 要想把name，age两个值，真正的存到实例里。那就要把两个值跟实例绑定
        self.name = name # 绑定参数值到实例上
        self.age  = age
        # 从上面的 self.name 传入 下方的函数可知 self把 类 里不同方法的变量打通，可以共享变量（属性）

    def say_hi(self): # 方法，第一个参数必须是self， self 代表实例本身
        print("hello,I am a dog,my type is ",self.d_type,self.name)


d = Dog("mjj",3) # 生成了一个实例
d2 = Dog("毛蛋",2) # 生成了一个实例


class People:

    nationality = "TW"

    def __init__(self,name,age,sex):
        self.name = name
        self.age  = age
        self.sex  = sex


p = People("Mjj",22,"M")
p2 = People("Alex",27,"M")
p3 = People("Jack",23,"F")

print(p.nationality)

People.nationality = "CN"

print(p.nationality)

p.nationality = "JP" #  相当于给实例p 创建了新的 实例属性       实例自己改了国籍，是否可以

print(p.nationality)
print(People.nationality)







# d.say_hi() # 实例.方法
# d2.say_hi() # 实际执行的是d2.sayhi(d2)
# print(d2)
#
# print(Dog.d_type)
#
# print(d.d_type) # 实例.属性

